ํจ์จ์ ์ธ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์ถ์ ์ํ ๋ชจ๋ฒ ์ฌ๋ก, ์ฑ๋ฅ ์ต์ ํ ๋ฐ ๊ณ ๊ธ ๊ธฐ์ ์ ๋ค๋ฃจ๋ ์ง์ฐ ์ด๊ธฐํ๋ฅผ ํตํ JavaScript ๋ชจ๋ ์ง์ฐ ๋ก๋ฉ์ ๋ํ ์ข ํฉ ๊ฐ์ด๋์ ๋๋ค.
JavaScript ๋ชจ๋ ์ง์ฐ ๋ก๋ฉ: ์ง์ฐ ์ด๊ธฐํ ๋ง์คํฐํ๊ธฐ
์น ๊ฐ๋ฐ์ ๋์์์ด ์งํํ๋ ํ๊ฒฝ์์ ์ฑ๋ฅ์ ๊ฐ์ฅ ์ค์ํฉ๋๋ค. ์ฌ์ฉ์๋ ๋น ๋ฅด๊ณ ์๋ต์ฑ์ด ๋ฐ์ด๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธฐ๋ํ๋ฉฐ JavaScript ๋ก๋ฉ์ ์ต์ ํํ๋ ๊ฒ์ ์ด ๋ชฉํ๋ฅผ ๋ฌ์ฑํ๋ ๋ฐ ์ค์ํ ๋จ๊ณ์ ๋๋ค. ๊ฐ๋ ฅํ ๊ธฐ์ ์ค ํ๋๋ ๋ชจ๋ ์ง์ฐ ๋ก๋ฉ์ด๋ฉฐ, ํนํ ์ง์ฐ ์ด๊ธฐํ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ๋ชจ๋ ์ฝ๋์ ์คํ์ ์ค์ ๋ก ํ์ํ ๋๊น์ง ์ง์ฐ์์ผ ์ด๊ธฐ ํ์ด์ง ๋ก๋ ์๊ฐ์ ๊ฐ์ ํ๊ณ ๋ณด๋ค ํจ์จ์ ์ธ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค.
๋ชจ๋ ์ง์ฐ ๋ก๋ฉ ์ดํด
๊ธฐ์กด์ JavaScript ๋ชจ๋ ๋ก๋ฉ์ ์ผ๋ฐ์ ์ผ๋ก ์ฆ์ ํ์ํ์ง ์ฌ๋ถ์ ๊ด๊ณ์์ด ๋ชจ๋ ๋ชจ๋ ์ฝ๋๋ฅผ ๋ฏธ๋ฆฌ ๊ฐ์ ธ์ค๊ณ ์คํํ๋ ๊ฒ์ ํฌํจํฉ๋๋ค. ์ด๋ ํนํ ์๋ง์ ์ข ์์ฑ์ด ์๋ ๋ณต์กํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ ์๋นํ ์ง์ฐ์ ์ด๋ํ ์ ์์ต๋๋ค. ๋ชจ๋ ์ง์ฐ ๋ก๋ฉ์ ํ์ํ ๊ฒฝ์ฐ์๋ง ๋ชจ๋์ ๋ก๋ํ์ฌ ์ด๊ธฐ ํ์ด๋ก๋๋ฅผ ์ค์ด๊ณ ์ธ์ง๋๋ ์ฑ๋ฅ์ ํฅ์์ํด์ผ๋ก์จ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค.
๋ค์๊ณผ ๊ฐ์ด ์๊ฐํ์ญ์์ค. ๋๊ท๋ชจ ๊ตญ์ ํธํ ์ ์์ํด๋ณด์ญ์์ค. ์ฒ์๋ถํฐ ๋ชจ๋ ๊ฐ์ค๊ณผ ์์ค์ ์ต๋ ์ฉ๋์ผ๋ก ์ค๋นํ๋ ๋์ ์ด๊ธฐ ์์ฝ์ ๋ฐ๋ผ ํน์ ์์ ๊ฐ์ค๊ณผ ์๋น์ค๋ง ์ค๋นํฉ๋๋ค. ๋ ๋ง์ ํฌ์๊ฐ์ด ๋์ฐฉํ์ฌ ํน์ ํธ์ ์์ค(์: ์ฒด์ก๊ด, ์คํ ๋๋ ํน์ ํ์์ค)์ด ํ์ํ ๊ฒฝ์ฐ ํด๋น ๋ชจ๋์ด ํ์ฑํ๋๊ฑฐ๋ '๋ก๋'๋ฉ๋๋ค. ์ด๋ฌํ ํจ์จ์ ์ธ ์์ ํ ๋น์ ๋ถํ์ํ ์ค๋ฒํค๋ ์์ด ์ํํ ์ด์์ ๋ณด์ฅํฉ๋๋ค.
์ง์ฐ ์ด๊ธฐํ: ์ง์ฐ ๋ก๋ฉ์ ํ ๋จ๊ณ ๋ ๋ฐ์
์ง์ฐ ์ด๊ธฐํ๋ ๋ชจ๋ ๋ก๋ฉ์ ์ง์ฐ์ํฌ ๋ฟ๋ง ์๋๋ผ ์ ๋์ ์ผ๋ก ํ์ํ ๋๊น์ง ์คํ์ ์ฐ๊ธฐํ์ฌ ์ง์ฐ ๋ก๋ฉ์ ํฅ์์ํต๋๋ค. ์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐํ๊ฑฐ๋ ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ์ค์ ํ๊ฑฐ๋ ๋ณต์กํ ๊ณ์ฐ์ ์ํํ๋ ๊ฒ๊ณผ ๊ฐ์ ์ด๊ธฐํ ๋ก์ง์ ํฌํจํ๋ ๋ชจ๋์ ํนํ ์ ์ฉํฉ๋๋ค. ์ด๊ธฐํ๋ฅผ ์ฐ๊ธฐํ๋ฉด ์ด๊ธฐ ์์ ๋์ ๋์ฑ ์ค์ด๊ณ ์๋ต์ฑ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
๋๋จ์์์, ์ ๋ฝ ๋ฐ ์๋ฉ๋ฆฌ์นด์ ๊ฐ์ ์ง์ญ์ ์ฐจ๋ ๊ณต์ ์๋น์ค์์ ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋งคํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ณ ๋ คํ์ญ์์ค. ํต์ฌ ์ง๋ ๊ธฐ๋ฅ์ ๋น ๋ฅด๊ฒ ๋ก๋๋์ด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์์๊ฐ ๋ง์ ์ง์ญ์ ๋ณด์ฌ์ฃผ๋ ํํธ๋งต์ด๋ ์ค์๊ฐ ๊ตํต ๋ถ์๊ณผ ๊ฐ์ ๊ณ ๊ธ ๊ธฐ๋ฅ ๋ชจ๋์ ์ง์ฐ๋ ์ ์์ต๋๋ค. ์ฌ์ฉ์๊ฐ ๋ช ์์ ์ผ๋ก ์์ฒญํ ๋๋ง ์ด๊ธฐํํด์ผ ํ๋ฏ๋ก ์ด๊ธฐ ๋ก๋ ์๊ฐ์ ์ ์งํ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ต์ฑ์ ํฅ์์ํต๋๋ค.
์ง์ฐ ์ด๊ธฐํ๋ฅผ ์ฌ์ฉํ ๋ชจ๋ ์ง์ฐ ๋ก๋ฉ์ ์ด์
- ๊ฐ์ ๋ ์ด๊ธฐ ํ์ด์ง ๋ก๋ ์๊ฐ: ํ์ ๋ชจ๋๋ง ๋ฏธ๋ฆฌ ๋ก๋ํ๊ณ ์ด๊ธฐํํ์ฌ ์ด๊ธฐ ํ์ด์ง ๋ก๋ ์๊ฐ์ด ํฌ๊ฒ ์ค์ด๋ค์ด ๋ ๋น ๋ฅด๊ณ ์๋ต์ฑ์ด ๋ฐ์ด๋ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค.
- ๋คํธ์ํฌ ๋์ญํญ ์๋น ๊ฐ์: ์ด๊ธฐ์๋ ๋ ์ ์ ๋ชจ๋์ด ๋ก๋๋๋ฏ๋ก ๋คํธ์ํฌ ๋์ญํญ ์๋น๊ฐ ์ค์ด๋ค๋ฉฐ ํนํ ๋๋ฆฌ๊ฑฐ๋ ์ ํ๋ ์ธํฐ๋ท ์ฐ๊ฒฐ์ ์ฌ์ฉํ๋ ์ฌ์ฉ์์๊ฒ ์ ์ฉํฉ๋๋ค.
- ํฅ์๋ ์ฌ์ฉ์ ๊ฒฝํ: ๋ ๋น ๋ฅธ ๋ก๋ฉ ์๊ฐ๊ณผ ํฅ์๋ ์๋ต์ฑ์ ๋์ฑ ์ฆ๊ฒ๊ณ ๋งค๋ ฅ์ ์ธ ์ฌ์ฉ์ ๊ฒฝํ์ผ๋ก ์ด์ด์ง๋๋ค.
- ๋ ๋์ ๋ฆฌ์์ค ํ์ฉ๋ฅ : ๋ชจ๋ ์ด๊ธฐํ๋ฅผ ์ง์ฐ์ํค๋ฉด ๋ฆฌ์์ค ํ์ฉ๋ฅ ์ ์ต์ ํํ๊ณ ๋ถํ์ํ ์ค๋ฒํค๋๋ฅผ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
- ๋จ์ํ๋ ์ฝ๋ ๊ด๋ฆฌ: ๋ชจ๋ ์ง์ฐ ๋ก๋ฉ์ ๋ชจ๋์ฑ๊ณผ ์ฝ๋ ๊ตฌ์ฑ์ ์ด์งํ์ฌ ๋ณต์กํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ ์ฝ๊ฒ ๊ด๋ฆฌํ๊ณ ์ ์ง ๊ด๋ฆฌํ ์ ์๋๋ก ํฉ๋๋ค.
์ง์ฐ ์ด๊ธฐํ๋ฅผ ์ฌ์ฉํ ๋ชจ๋ ์ง์ฐ ๋ก๋ฉ ๊ตฌํ ๊ธฐ์
JavaScript์์ ์ง์ฐ ์ด๊ธฐํ๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ ์ง์ฐ ๋ก๋ฉ์ ๊ตฌํํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ๋ช ๊ฐ์ง ๊ธฐ์ ์ด ์์ต๋๋ค.
1. ๋์ ์ํฌํธ
ECMAScript 2020์ ๋์ ๋ ๋์ ์ํฌํธ๋ ๋ชจ๋์ ๋น๋๊ธฐ์ ์ผ๋ก ๋ก๋ํ๋ ๊ธฐ๋ณธ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ๋ฏธ๋ฆฌ ๋ก๋ํ๋ ๋์ ์์ฒญ ์ ๋ชจ๋์ ๋ก๋ํ ์ ์์ต๋๋ค.
์:
async function loadAnalytics() {
const analyticsModule = await import('./analytics.js');
analyticsModule.initialize();
}
// ์ฌ์ฉ์๊ฐ ํน์ ๊ธฐ๋ฅ๊ณผ ์ํธ ์์ฉํ ๋ loadAnalytics()๋ฅผ ํธ์ถํฉ๋๋ค.
document.getElementById('myButton').addEventListener('click', loadAnalytics);
์ด ์์์ `analytics.js` ๋ชจ๋์ ์ฌ์ฉ์๊ฐ ID๊ฐ `myButton`์ธ ๋ฒํผ์ ํด๋ฆญํ ๋๋ง ๋ก๋๋ฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋ชจ๋ ๋ด์์ `initialize()` ํจ์๊ฐ ํธ์ถ๋์ด ํ์ํ ์ค์ ์ ์ํํฉ๋๋ค.
2. ๊ต์ฐจ ๊ด์ฐฐ์ API
๊ต์ฐจ ๊ด์ฐฐ์ API๋ฅผ ์ฌ์ฉํ๋ฉด ์์๊ฐ ๋ทฐํฌํธ์ ๋ค์ด์ฌ ๋๋ฅผ ๊ฐ์งํ ์ ์์ต๋๋ค. ์ด๋ ์ฌ์ฉ์์๊ฒ ํ์๋ ๋ ๋ชจ๋์ ๋ก๋ฉ ๋ฐ ์ด๊ธฐํ๋ฅผ ํธ๋ฆฌ๊ฑฐํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์:
const observer = new IntersectionObserver(entries => {
entries.forEach(entry => {
if (entry.isIntersecting) {
import('./lazy-module.js').then(module => {
module.initialize();
});
observer.unobserve(entry.target);
}
});
});
const lazyElement = document.getElementById('lazy-module');
observer.observe(lazyElement);
์ด ์ฝ๋๋ ID๊ฐ `lazy-module`์ธ ์์๋ฅผ ๊ด์ฐฐํฉ๋๋ค. ์์๊ฐ ๋ทฐํฌํธ์ ๋ค์ด์ค๋ฉด `lazy-module.js` ๋ชจ๋์ด ๋ก๋๋๊ณ ์ด๊ธฐํ๋ฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋ ์ด์ ๋ก๋ํ์ง ์๋๋ก ๊ด์ฐฐ์๊ฐ ์ฐ๊ฒฐ ํด์ ๋ฉ๋๋ค.
3. ์กฐ๊ฑด๋ถ ๋ชจ๋ ๋ก๋ฉ
์ฌ์ฉ์ ์ญํ , ์ฅ์น ์ ํ ๋๋ ๊ธฐ๋ฅ ํ๋๊ทธ์ ๊ฐ์ ํน์ ์กฐ๊ฑด์ ๊ธฐ๋ฐ์ผ๋ก ๋ชจ๋์ ๋ก๋ํ๊ณ ์ด๊ธฐํํ ์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๊ธฐ ์ํด ์กฐ๊ฑด๋ถ ๋ก์ง์ ์ฌ์ฉํ ์๋ ์์ต๋๋ค.
์:
if (userRole === 'admin') {
import('./admin-module.js').then(module => {
module.initialize();
});
}
์ด ์์์ `admin-module.js` ๋ชจ๋์ ์ฌ์ฉ์ ์ญํ ์ด 'admin'์ธ ๊ฒฝ์ฐ์๋ง ๋ก๋๋๊ณ ์ด๊ธฐํ๋ฉ๋๋ค.
๊ณ ๊ธ ๊ธฐ์ ๋ฐ ๊ณ ๋ ค ์ฌํญ
์ฝ๋ ๋ถํ
์ฝ๋ ๋ถํ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ๋ก๋ํ ์ ์๋ ๋ ์์ ๋ฒ๋ค๋ก ๋๋๋ ๊ธฐ์ ์ ๋๋ค. ์ด๋ ๋ชจ๋ ์ง์ฐ ๋ก๋ฉ๊ณผ ๊ฒฐํฉํ์ฌ ์ฑ๋ฅ์ ๋์ฑ ์ต์ ํํ ์ ์์ต๋๋ค. Webpack, Parcel ๋ฐ ๊ธฐํ ๋ฒ๋ค๋ฌ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฝ๋ ๋ถํ ์ ์ง์ํฉ๋๋ค.
ํ๋ฆฌํ์นญ ๋ฐ ํ๋ฆฌ๋ก๋ฉ
ํ๋ฆฌํ์นญ ๋ฐ ํ๋ฆฌ๋ก๋ฉ์ ์์ผ๋ก ํ์ํ ๊ฐ๋ฅ์ฑ์ด ๋์ ๋ฆฌ์์ค๋ฅผ ๋ธ๋ผ์ฐ์ ์ ํํธํ ์ ์๋ ๊ธฐ์ ์ ๋๋ค. ์ด๋ ์ค์ ๋ก ์์ฒญํ๊ธฐ ์ ์ ๋ฆฌ์์ค๋ฅผ ๋ก๋ํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ธ์ง๋๋ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค. ๊ณต๊ฒฉ์ ์ธ ํ๋ฆฌํ์นญ์ ๋์ญํญ์ด ๋ฎ์ ์ฐ๊ฒฐ์์ ์ฑ๋ฅ์ ๋ถ์ ์ ์ธ ์ํฅ์ ๋ฏธ์น ์ ์์ผ๋ฏ๋ก ์ฃผ์ํ์ญ์์ค.
ํธ๋ฆฌ ์ ฐ์ดํน
ํธ๋ฆฌ ์ ฐ์ดํน์ ๋ฒ๋ค์์ ์ฌ์ฉ๋์ง ์๋ ์ฝ๋๋ฅผ ์ ๊ฑฐํ๋ ๊ธฐ์ ์ ๋๋ค. ์ด๋ ๋ฒ๋ค์ ํฌ๊ธฐ๋ฅผ ์ค์ด๊ณ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค. ๋๋ถ๋ถ์ ์ต์ ๋ฒ๋ค๋ฌ๋ ํธ๋ฆฌ ์ ฐ์ดํน์ ์ง์ํฉ๋๋ค.
์ข ์์ฑ ์ฃผ์
์ข ์์ฑ ์ฃผ์ ์ ๋ชจ๋์ ๋ถ๋ฆฌํ๊ณ ํ ์คํธํ๊ธฐ ์ฝ๊ฒ ๋ง๋๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ํ ๋ชจ๋์ด ์ด๊ธฐํ๋๋ ์๊ธฐ๋ฅผ ์ ์ดํ๋ ๋ฐ ์ฌ์ฉํ ์๋ ์์ต๋๋ค. Angular, NestJS ๋ฐ ์ ์ฌํ ๋ฐฑ์๋ ํ๋ ์์ํฌ์ ๊ฐ์ ์๋น์ค๋ ์ข ์์ฑ ์ฃผ์ ๊ด๋ฆฌ๋ฅผ ์ํ ์ ๊ตํ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํฉ๋๋ค. JavaScript์๋ ๊ธฐ๋ณธ DI ์ปจํ ์ด๋๊ฐ ์์ง๋ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ด ํจํด์ ๊ตฌํํ ์ ์์ต๋๋ค.
์ค๋ฅ ์ฒ๋ฆฌ
๋ชจ๋ ์ง์ฐ ๋ก๋ฉ์ ์ฌ์ฉํ ๋๋ ์ค๋ฅ๋ฅผ ์ ์์ ์ผ๋ก ์ฒ๋ฆฌํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ๋ชจ๋์ด ๋ก๋ ๋๋ ์ด๊ธฐํ์ ์คํจํ๋ ๊ฒฝ์ฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒ์ด ํฌํจ๋ฉ๋๋ค. ๋์ ์ํฌํธ ์ฃผ์์ `try...catch` ๋ธ๋ก์ ์ฌ์ฉํ์ฌ ์ค๋ฅ๋ฅผ ํฌ์ฐฉํ๊ณ ์ฌ์ฉ์์๊ฒ ์ ์ตํ ํผ๋๋ฐฑ์ ์ ๊ณตํ์ญ์์ค.
์๋ฒ ์ธก ๋ ๋๋ง(SSR)
์๋ฒ ์ธก ๋ ๋๋ง์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์๋ฒ์์ ๋ชจ๋์ด ์ฌ๋ฐ๋ฅด๊ฒ ๋ก๋๋๊ณ ์ด๊ธฐํ๋์๋์ง ํ์ธํด์ผ ํฉ๋๋ค. ์ด๋ฅผ ์ํด์๋ ์๋ฒ ์ธก ํ๊ฒฝ์ ๊ณ ๋ คํ์ฌ ์ง์ฐ ๋ก๋ฉ ์ ๋ต์ ์กฐ์ ํด์ผ ํ ์ ์์ต๋๋ค. Next.js ๋ฐ Nuxt.js์ ๊ฐ์ ํ๋ ์์ํฌ๋ ์๋ฒ ์ธก ๋ ๋๋ง ๋ฐ ๋ชจ๋ ์ง์ฐ ๋ก๋ฉ์ ๋ํ ๊ธฐ๋ณธ ์ง์์ ์ ๊ณตํฉ๋๋ค.
์ค์ ์
๋ง์ ์ธ๊ธฐ ์๋ ์น์ฌ์ดํธ ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ํฅ์์ํค๊ธฐ ์ํด ์ง์ฐ ์ด๊ธฐํ๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ ์ง์ฐ ๋ก๋ฉ์ ์ฌ์ฉํฉ๋๋ค. ๋ช ๊ฐ์ง ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ ์ ์๊ฑฐ๋ ์น์ฌ์ดํธ: ์ฌ์ฉ์๊ฐ ๋ช ๊ฐ์ง ์ ํ์ ๋ณผ ๋๊น์ง ์ ํ ์ถ์ฒ ๋ชจ๋ ๋ก๋ฉ์ ์ง์ฐํฉ๋๋ค.
- ์์ ๋ฏธ๋์ด ํ๋ซํผ: ์ฌ์ฉ์๊ฐ ๋ช ์์ ์ผ๋ก ์์ฒญํ ๋๊น์ง ๋น๋์ค ํธ์ง ๋๋ ๋ผ์ด๋ธ ์คํธ๋ฆฌ๋ฐ๊ณผ ๊ฐ์ ๊ณ ๊ธ ๊ธฐ๋ฅ ๋ชจ๋์ ์ง์ฐ ๋ก๋ํฉ๋๋ค.
- ์จ๋ผ์ธ ํ์ต ํ๋ซํผ: ์ฌ์ฉ์๊ฐ ์ฐธ์ฌํ ์ค๋น๊ฐ ๋ ๋๊น์ง ๋ํํ ์ฐ์ต ๋๋ ํด์ฆ ๋ชจ๋ ๋ก๋ฉ์ ์ง์ฐํฉ๋๋ค.
- ๋งคํ ์ ํ๋ฆฌ์ผ์ด์ : ์ฌ์ฉ์๊ฐ ํ์ํ ๋๊น์ง ๊ตํต ๋ถ์ ๋๋ ๊ฒฝ๋ก ์ต์ ํ์ ๊ฐ์ ๊ณ ๊ธ ๊ธฐ๋ฅ ๋ชจ๋ ๋ก๋ฉ์ ์ง์ฐํฉ๋๋ค.
๋ค์ํ ์ธํฐ๋ท ์ธํ๋ผ๋ฅผ ๊ฐ์ง ์ง์ญ์์ ์ด์๋๋ ๊ธ๋ก๋ฒ ์ ์ ์๊ฑฐ๋ ํ๋ซํผ์ ๊ณ ๋ คํ์ญ์์ค. ์ง์ฐ ๋ก๋ฉ์ ๊ตฌํํจ์ผ๋ก์จ ์ํ๋ฆฌ์นด ๋๋ ์์์ ๋์ด ์ง์ญ๊ณผ ๊ฐ์ด ์ฐ๊ฒฐ ์๋๊ฐ ๋๋ฆฐ ์ง์ญ์ ์ฌ์ฉ์๋ ์ฌ์ดํธ์ ํต์ฌ ๊ธฐ๋ฅ์ ๋น ๋ฅด๊ฒ ์ก์ธ์คํ ์ ์์ผ๋ฉฐ, ์ฐ๊ฒฐ ์๋๊ฐ ๋น ๋ฅธ ์ฌ์ฉ์๋ ์ด๊ธฐ ๋ก๋ ์ค์ ์ง์ฐ ์์ด ๊ณ ๊ธ ๊ธฐ๋ฅ์ ์ด์ ์ ๋๋ฆด ์ ์์ต๋๋ค.
๋ชจ๋ฒ ์ฌ๋ก
- ์ด๊ธฐ ํ์ด์ง ๋ก๋์ ์ค์ํ์ง ์์ ๋ชจ๋์ ์๋ณํฉ๋๋ค. ์ด๋ฌํ ๋ชจ๋์ ์ง์ฐ ๋ก๋ฉ์ ์ ํฉํฉ๋๋ค.
- ๋์ ์ํฌํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋์ ๋น๋๊ธฐ์ ์ผ๋ก ๋ก๋ํฉ๋๋ค.
- ๊ต์ฐจ ๊ด์ฐฐ์ API๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋์ด ์ฌ์ฉ์์๊ฒ ํ์๋ ๋ ๋ก๋ํฉ๋๋ค.
- ์กฐ๊ฑด๋ถ ๋ชจ๋ ๋ก๋ฉ์ ์ฌ์ฉํ์ฌ ํน์ ์กฐ๊ฑด์ ๊ธฐ๋ฐ์ผ๋ก ๋ชจ๋์ ๋ก๋ํฉ๋๋ค.
- ๋ชจ๋ ์ง์ฐ ๋ก๋ฉ์ ์ฝ๋ ๋ถํ , ํ๋ฆฌํ์นญ ๋ฐ ํธ๋ฆฌ ์ ฐ์ดํน๊ณผ ๊ฒฐํฉํ์ฌ ์ฑ๋ฅ์ ๋์ฑ ์ต์ ํํฉ๋๋ค.
- ์ค๋ฅ๋ฅผ ์ ์์ ์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค.
- ์ง์ฐ ๋ก๋ฉ ๊ตฌํ์ ์ฒ ์ ํ ํ ์คํธํฉ๋๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ๋ชจ๋ํฐ๋งํ๊ณ ํ์์ ๋ฐ๋ผ ์ง์ฐ ๋ก๋ฉ ์ ๋ต์ ์กฐ์ ํฉ๋๋ค.
๋๊ตฌ ๋ฐ ๋ฆฌ์์ค
- Webpack: ์ฝ๋ ๋ถํ ๋ฐ ์ง์ฐ ๋ก๋ฉ์ ์ง์ํ๋ ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋ชจ๋ ๋ฒ๋ค๋ฌ์ ๋๋ค.
- Parcel: ์ฝ๋ ๋ถํ ๋ฐ ์ง์ฐ ๋ก๋ฉ๋ ์ง์ํ๋ ์ ๋ก ๊ตฌ์ฑ ๋ฒ๋ค๋ฌ์ ๋๋ค.
- Google Lighthouse: ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ๊ฐ์ฌํ๋ ๋๊ตฌ์ ๋๋ค.
- WebPageTest: ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ํ ์คํธํ๋ ๋ ๋ค๋ฅธ ๋๊ตฌ์ ๋๋ค.
- MDN Web Docs: ์น ๊ฐ๋ฐ ๋ฌธ์์ ๋ํ ํฌ๊ด์ ์ธ ๋ฆฌ์์ค์ ๋๋ค.
๊ฒฐ๋ก
์ง์ฐ ์ด๊ธฐํ๋ฅผ ์ฌ์ฉํ ๋ชจ๋ ์ง์ฐ ๋ก๋ฉ์ JavaScript ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ์ต์ ํํ๋ ๊ฐ๋ ฅํ ๊ธฐ์ ์ ๋๋ค. ํ์ํ ๊ฒฝ์ฐ์๋ง ๋ชจ๋์ ๋ก๋ํ๊ณ ์ด๊ธฐํํ๋ฉด ์ด๊ธฐ ํ์ด์ง ๋ก๋ ์๊ฐ์ ํฌ๊ฒ ๊ฐ์ ํ๊ณ ๋คํธ์ํฌ ๋์ญํญ ์๋น๋ฅผ ์ค์ด๋ฉฐ ์ฌ์ฉ์ ๊ฒฝํ์ ํฅ์์ํฌ ์ ์์ต๋๋ค. ์ด ๊ฐ์ด๋์ ์ค๋ช ๋ ๋ค์ํ ๊ธฐ์ ๊ณผ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ดํดํจ์ผ๋ก์จ ํ๋ก์ ํธ์์ ๋ชจ๋ ์ง์ฐ ๋ก๋ฉ์ ํจ๊ณผ์ ์ผ๋ก ๊ตฌํํ๊ณ ๋ค์ํ ์ธํฐ๋ท ์ก์ธ์ค ์๋์ ํ๋์จ์ด ๊ธฐ๋ฅ์ ๊ฐ์ถ ๊ธ๋ก๋ฒ ์ฒญ์ค์๊ฒ ๋ง๋ ๋ ๋น ๋ฅด๊ณ ์๋ต์ฑ์ด ๋ฐ์ด๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ ๋ต์ ํ์ฉํ์ฌ ์ ์ธ๊ณ ์ฌ์ฉ์์๊ฒ ์ํํ๊ณ ์ฆ๊ฑฐ์ด ๊ฒฝํ์ ์ ๊ณตํ์ญ์์ค.